
from constantes import *
from interfaz import Interfaz

class Tablero(object):
	"""Clase que representa el tablero de juego."""

	def __init__(self, continentes, limitrofes):
		"""Crea un tablero desde un diccionario de continentes con su
		lista de paises, y un diccionario de paises y su lista de
		limitrofes."""
		self.continentes=continentes
		self.limitrofes=limitrofes
		self.paises={}
		for continente in self.continentes:
			for pais in self.continentes[continente]:
				self.paises[pais]=['',0] #El primer campo va a ser el color y el segundo los ejercitos

	def ocupar_pais(self, pais, color, ejercitos=1):
		"""Ocupa el pais indicado con ejercitos del color."""
		self.paises[pais]=[color,ejercitos]

	def asignar_ejercitos(self, pais, ejercitos):
		"""Suma o resta una cantidad de ejercitos en el pais indicado."""
		self.paises[pais][1]+=ejercitos

	def actualizar_interfaz(self, agregados=None):
		"""Redibuja interfaz grafica. Puede recibir un diccionario de
		paises y numero de ejercitos que se adicionan o sustraen a los
		que estan ubicados en el tablero.
		Por ejemplo, si el diccionario fuera
		{'Argentina': -1, 'Brasil': 1}, el tablero se dibujaria con un
		ejercito menos en Argentina y uno mas en Brasil."""
		if agregados:
			paises = {}
			for pais, cambio in agregados.items():
				color, ejercitos = self.paises[pais]
				paises[pais] = (color, ejercitos + cambio)
			Interfaz.ubicar_ejercitos(paises)
		else:
			Interfaz.ubicar_ejercitos(self.paises)
		#raise NotImplementedError()
		# Utilizar la funcion de la Interfaz, que recibe un diccionario
		# de paises y colores, por ejemplo:
		# >>> paises = {'Argentina': (COLOR_NEGRO, 10), 'Brasil':
		# ...	(COLOR_ROSA, 1)}
		# >>> Interfaz.ubicar_ejercitos(paises)
		# Va a poner 10 ejercitos negros en Argentina y 1 rosa en
		# Brasil.

	def color_pais(self, pais):
		"""Devuelve el color de un pais."""
		return self.paises[pais][0]

	def ejercitos_pais(self, pais):
		"""Devuelve la cantidad ejercitos en un pais."""
		return self.paises[pais][1]

	def es_limitrofe(self, pais1, pais2):
		"""Informa si dos paises son limitrofes."""
		return pais2 in self.limitrofes[pais1]

	def cantidad_paises(self):
		"""Informa la cantidad de paises totales."""
		return len(self.paises)

	def cantidad_paises_continente(self, continente):
		"""Informa la cantidad de paises en continente."""
		return len(self.continentes[continente])

	def continente_pais(self, pais):
		"""Informa el continente de un pais."""
		for continente in self.continentes:
			if pais in self.continentes[continente]:
				return continente

	def paises_color(self, color):
		"""Devuelve la lista de paises con ejercitos del color."""
		paises_de_color=list()
		for pais in self.paises:
			if self.paises[pais][0]==color:
				paises_de_color.append(pais)
		return paises_de_color
					
